package com.demo.tool;

import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AccessLevel;
import lombok.Data;
import lombok.Setter;

import java.util.List;

//T 实体类型
@Data
public class paging<T> {
    private int pageSize;
    private int maxPage;
    private int page;
    private int totalRecords;
    private List<T> data;
    @JsonIgnore//Json不返回该属性
    @Setter(AccessLevel.PRIVATE)
    private int offset;//获取当前页起始记录位置，从0开始

    /**
     * 进行分页初始化
     * 说明：
     * 要求同时完成分页中相关属性的计算
     * @param page 当前页
     * @param pageSize 每页记录数
     * @param totalRecords  总记录数，一般应将数据库中查询结果的总记录数放入
     */
    public paging(Integer page, Integer pageSize , int totalRecords){
        if(pageSize==null){
            pageSize=20;//默认20条记录
        }
        this.setPageSize(pageSize);
        this.setTotalRecords(totalRecords);
        this.maxPage = ((totalRecords % pageSize) == 0)?(totalRecords / pageSize):(totalRecords / pageSize + 1);
        if(maxPage==0){
            maxPage=1;
        }
        if(page==null){
            page=1;
        }else{
            if (page < 1) {
                page = 1;
            } else if(page > maxPage){
                page = maxPage;
            }
        }
        this.setPage(page);
        int offset=(this.getPage() - 1) * this.getPageSize();
        this.setOffset(offset);

    }


}
